/**
 * 
 */
package denaris.core.listener;

import denaris.core.AbstractDenarisMap;
import denaris.core.AbstractParticle;
import denaris.core.entity.AbstractEntity;

/**
 * Notifies the implementing instance whenever a collision between two objects
 * has occured. There is a CollisionAdapter class which can be used whenever
 * there should be an anonymous ICollisionListener. The advantage in using the
 * adapter is that one doesn't have to implement ALL the methods here as the
 * adapter already implements everything. You only overwrite the event that you
 * are interested in.
 * 
 * @author stkl23
 * 
 */
public interface ICollisionListener {
	/**
	 * This method is called whenever a collision between two entity groups has
	 * happened
	 */
	public void onCollision(AbstractEntity source,
			AbstractEntity opponent);

	/** This method is called when an entity has collided with a map */
	public void onCollision(AbstractEntity source, AbstractDenarisMap map);

	/** This method is called when a bullet has collided with an entity group */
	public void onCollision(AbstractParticle source,
			AbstractEntity opponent);

	/** This method is called when a bullet has collided with a map */
	public void onCollision(AbstractParticle source, AbstractDenarisMap map);
}
